1. ¿Qué es un contenedor?

Un contenedor es una forma moderna de ejecutar aplicaciones de manera aislada y portable.

La idea principal es:

Aplicación
+ dependencias
+ configuración
=
Contenedor

¿Qué significa esto?

Un contenedor incluye TODO lo necesario para ejecutar una aplicación:

  • Código
  • Librerías
  • Dependencias
  • Configuración
  • Variables entorno

Problema clásico

Antes ocurría muchísimo:

"En mi ordenador funciona"

Pero al mover la aplicación:

  • Faltaban librerías
  • Versiones distintas
  • Errores configuración

Con contenedores

La aplicación funciona igual en cualquier lugar.

Los contenedores permiten mover aplicaciones fácilmente entre ordenadores, servidores y cloud.

Mini-test

¿Qué incluye un contenedor?

Aplicación y dependencias
Solo HTML
Solo el sistema operativo
Solo imágenes

2. El problema tradicional de las aplicaciones

Antes de Docker, desplegar aplicaciones era complicado.

Ejemplo real

Un desarrollador crea aplicación Node.js:

Versión Node.js = 18

Pero el servidor tiene:

Versión Node.js = 14

Resultado

  • Errores
  • Dependencias incompatibles
  • Aplicación rota

Otro problema

Dos aplicaciones pueden necesitar versiones distintas.

Aplicación A → Python 3.8
Aplicación B → Python 3.11

Esto genera conflictos.

Los contenedores solucionan esto

Cada aplicación tiene SU propio entorno aislado.

Pregunta típica: los contenedores aíslan aplicaciones y dependencias.

Mini-test

¿Qué problema solucionan los contenedores?

Conflictos dependencias
Eliminar internet
Crear discos SSD
Gestionar DNS

3. Máquinas virtuales vs contenedores

Máquina virtual (VM)

Una máquina virtual incluye:

  • Sistema operativo completo
  • Kernel propio
  • Aplicaciones

Problema

  • Pesadas
  • Lentas
  • Consumen mucha RAM

Contenedor

El contenedor comparte el kernel del sistema operativo host.

Por eso:

  • Es más ligero
  • Arranca rápido
  • Consume menos recursos
Máquina Virtual Contenedor
Sistema operativo completo Comparte kernel
Más pesada Más ligera
Arranque lento Arranque rápido
Un mismo servidor puede ejecutar muchísimos más contenedores que máquinas virtuales.

Mini-test

¿Qué ventaja tiene un contenedor?

Consume menos recursos
Necesita más RAM
Usa más discos
Es más lento

4. ¿Qué es Docker?

Docker es la plataforma más famosa para trabajar con contenedores.

Qué permite Docker

  • Crear contenedores
  • Ejecutar contenedores
  • Compartir aplicaciones
  • Desplegar rápidamente

Idea simple

Docker
↓
Gestiona contenedores

Qué hace Docker internamente

  • Aísla procesos
  • Gestiona redes
  • Gestiona imágenes
  • Ejecuta aplicaciones

Comandos básicos

docker run
docker build
docker ps
docker stop
Docker NO es un contenedor; es la plataforma que los administra.

Mini-test

¿Qué es Docker?

Plataforma de contenedores
Sistema operativo
Base de datos
Firewall

5. Imágenes y contenedores

Imagen Docker

Una imagen es como una plantilla.

Contiene:

  • Aplicación
  • Dependencias
  • Configuración

Contenedor

Es una instancia en ejecución de una imagen.

Ejemplo fácil

Imagen = receta
Contenedor = comida preparada

Flujo normal

Dockerfile
↓
Imagen
↓
Contenedor
Puedes crear muchísimos contenedores desde una misma imagen.

Mini-test

¿Qué es una imagen Docker?

Plantilla para crear contenedores
Máquina virtual completa
Disco duro físico
Balanceador carga

6. Docker paso a paso

Ejecutar un contenedor

docker run nginx

Qué ocurre

  • Docker descarga imagen
  • Crea contenedor
  • Ejecuta NGINX

Ver contenedores activos

docker ps

Detener contenedor

docker stop ID_CONTENEDOR

Eliminar contenedor

docker rm ID_CONTENEDOR

Ver imágenes

docker images
Docker Hub es el repositorio más famoso de imágenes Docker.

Mini-test

¿Qué comando muestra contenedores activos?

docker ps
docker create vpc
docker dns
docker subnet

7. Dockerfile explicado desde cero

Un Dockerfile es un archivo con instrucciones para crear imágenes.

Ejemplo sencillo

FROM node:18

WORKDIR /app

COPY . .

RUN npm install

CMD ["node", "app.js"]

Explicación línea por línea

FROM

Indica imagen base.

FROM node:18

Usa Node.js versión 18.

WORKDIR

Define carpeta trabajo.

COPY

Copia archivos aplicación.

RUN

Ejecuta comandos.

CMD

Comando inicial del contenedor.

Construir imagen

docker build -t miapp .

Ejecutar imagen

docker run miapp
Dockerfile es uno de los conceptos MÁS importantes del tema.

Mini-test

¿Qué hace COPY?

Copiar archivos al contenedor
Crear VPC
Eliminar imágenes
Crear balanceadores

8. ¿Qué es Kubernetes?

Cuando tenemos MUCHOS contenedores, administrarlos manualmente es difícil.

Problema

Imagina:

  • 100 contenedores
  • Múltiples servidores
  • Muchos usuarios

Kubernetes

Es una plataforma para coordinar contenedores automáticamente.

Qué hace Kubernetes

  • Escalado automático
  • Distribución carga
  • Reinicio automático
  • Orquestación contenedores

Qué significa orquestación

Coordinar automáticamente muchos contenedores.

Docker ejecuta contenedores. Kubernetes coordina MUCHOS contenedores.

Mini-test

¿Qué hace Kubernetes?

Orquestar contenedores
Crear discos físicos
Gestionar DNS únicamente
Crear usuarios IAM

9. Monolitos vs microservicios

Aplicación monolítica

Toda la aplicación está junta.

Frontend
+ backend
+ base datos
=
Gran aplicación única

Problema

  • Difícil escalar
  • Difícil actualizar
  • Difícil mantener

Microservicios

La aplicación se divide en pequeñas partes.

Servicio usuarios
Servicio pagos
Servicio productos
Servicio login

Ventajas

  • Escalado independiente
  • Más flexible
  • Más fácil actualizar
Los contenedores y microservicios suelen ir juntos.

Mini-test

¿Qué ventaja tienen microservicios?

Escalar partes independientes
Usar un único servidor enorme
Eliminar APIs
Eliminar contenedores

10. Amazon ECS

Amazon ECS (Elastic Container Service) es el servicio AWS para ejecutar contenedores Docker.

Qué hace ECS

  • Gestiona contenedores
  • Escala automáticamente
  • Distribuye carga
  • Coordina despliegues

Funcionamiento

Docker containers
↓
Amazon ECS
↓
EC2 o Fargate

Ventaja

AWS administra gran parte de la infraestructura.

ECS simplifica muchísimo ejecutar contenedores en AWS.

Mini-test

¿Qué servicio ejecuta contenedores en AWS?

Amazon ECS
Route 53
IAM
CloudFront

11. AWS Fargate explicado fácil

Fargate es una tecnología serverless para contenedores.

Problema clásico

Con ECS tradicional:

  • Debes administrar EC2
  • Escalar servidores
  • Gestionar capacidad

Con Fargate

AWS administra servidores automáticamente.

Solo haces esto

Subir contenedor
↓
Ejecutar

Ventajas

  • Menos administración
  • Escalado automático
  • Modelo serverless
Fargate NO elimina ECS; funciona junto con ECS.

Mini-test

¿Qué ventaja tiene Fargate?

No administrar servidores
Eliminar Docker
Eliminar internet
Eliminar Kubernetes

12. Amazon EKS

Amazon EKS es el servicio Kubernetes administrado de AWS.

Qué hace

  • Ejecutar Kubernetes
  • Administrar clusters
  • Escalar nodos
  • Integrarse con AWS

Diferencia ECS vs EKS

ECS EKS
Tecnología AWS Kubernetes estándar
Más sencillo Más complejo
Más fácil aprender Más flexible

Importante

EKS usa Kubernetes real.

Muchas empresas grandes utilizan Kubernetes por portabilidad.

Mini-test

¿Qué servicio usa Kubernetes?

Amazon EKS
CloudFront
Route 53
S3

13. Amazon ECR

Amazon ECR (Elastic Container Registry) es un repositorio de imágenes Docker.

Qué almacena

  • Imágenes Docker
  • Versiones aplicaciones
  • Contenedores privados

Flujo típico

Docker build
↓
Imagen Docker
↓
Subir a ECR
↓
ECS descarga imagen

Comandos básicos

docker build -t app .

docker push ecr-url/app
ECR funciona como “GitHub de imágenes Docker”.

Mini-test

¿Qué almacena ECR?

Imágenes Docker
Usuarios IAM
Balanceadores
Subredes VPC

14. Arquitectura moderna con contenedores

Arquitectura moderna típica

Usuario
↓
Load Balancer
↓
ECS / Kubernetes
↓
Contenedores Docker
↓
Base de datos

Ventajas

  • Escalabilidad
  • Portabilidad
  • Alta disponibilidad
  • Automatización
  • Despliegue rápido

Qué usan muchas empresas

  • Docker
  • Kubernetes
  • Microservicios
  • CI/CD

Idea final importante

Los contenedores cambiaron completamente la forma moderna de desplegar aplicaciones.

Actualmente Docker y Kubernetes son tecnologías fundamentales en cloud computing.
Docker, Kubernetes y ECS son conceptos MUY preguntados en entrevistas cloud.

Mini-test

¿Qué tecnología coordina contenedores a gran escala?

Kubernetes
S3
IAM
CloudWatch